package DataStructure_ZL.栈模拟;

import java.util.Arrays;

public class MyStack<E> {
    Object[] array;
    int size;
    public MyStack(){
        array = new Object[3];
    }
    //添加元素
    public E push(E e){
        //判断是不是满的
        ensureCapacity();
        array[size++]=e;
        return e;
    }
    //删除栈顶元素
    public E pop(){
        //判断是否为空
        if (empty())return null;
        E e = (E) array[size-1];
        array[size-1]=null;
        size--;
        return e;
    }
    //获取栈顶元素
    public E peek(){
        if (empty())  return null;
        return (E)array[size-1];
    }
    //获取大小
    public int size(){
        return size;
    }
    //判断是否为空
    public boolean empty(){
        return 0==size;
    }
    //扩容
    private void ensureCapacity(){
        if (size==array.length){
            array=Arrays.copyOf(array,size*2);
        }
    }
    //输出
    public void display(){
        for (int i = size-1; i >=0; i--) {
            System.out.println(array[i]);
        }
    }

    /*
    输入两个整数序列，第一个序列表示栈的压入顺序，请判断第二个序列是否可能为该栈的弹出顺序。
    假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序，序列4,5,3,2,1是该
    压栈序列对应的一个弹出序列，但4,3,5,1,2就不可能是该压栈序列的弹出序列。
     */

}
